/*
 * @file memory_pool.h
 * @brief 内存池管理
 * @author Liu Guirong
 * @date 2011-07-11
 */
#ifndef MEMORY_POOL_H
#define MEMORY_POOL_H

#define ULONG unsigned long 

/*!
 * @param n_unit_size [I] 内存单元大小
 * @param n_init_size [I] 初始分配内存个数
 * @param n_grow_size [I] 之后每次分配内存个数
 * @return 初始化成功返回0 ,否则返回 非0
 */
extern int
init_memorypool(ULONG n_unit_size,ULONG n_init_size,ULONG n_grow_size);
/*!
 * @return 返回新申请到的内存地址
 * @note 向内存池申请一个结点的内存
 */
extern void* 
alloc_node();
/*!
 * @param p [I] 要回收的结点指针
 * @return 成功返回0 否则返回非0
 * @note  回到到内存池
 */
extern int 
free_node(void* p );
/*
 * @return 成功返回0，否则返回1
 * @note 回收所有分配的内存
 */
extern int 
delete_memorypool();


#endif
